#include<bits/stdc++.h>

using namespace std;
int ans,n,mf,mfts,ms,msts,m,da,u,ans1[100010],ans2[100010],c[100010];
struct data
{
	int a,b;
};
data ua[100010],a[100010];
bool cmp(data a,data b)
{
	if(a.a!=b.a)return a.a<b.a;
	return a.b<b.b;
}
int main()
{
	freopen("airport.in","r",stdin);
	freopen("airport.out","w",stdout);
	cin>>n>>mf>>ms;
	for(int i=1;i<=mf;++i)
	{
		scanf("%d%d",&ua[i].a,&ua[i].b);
	}
	sort(ua+1,ua+1+mf,cmp);
	for(int i=1;i<=ms;++i)
	{
		scanf("%d%d",&a[i].a,&a[i].b);
	}
	sort(a+1,a+1+ms,cmp);
	ans=0;
	for(int i=1;i<=n;++i)
	{
		int p=0,l=0,r=2147483647;
		for(int j=1;j<=mf;++j)
		{
			if(ua[j].a>r)--p;
			if(p<1) r=ua[j].b,++ans,++p,c[j]=1;
		}
		mfts=mf;
		mf=0;
		for(int j=1;j<=mfts;++j)
		{
			if(!c[j])
			{
				ua[++mf]=ua[j];
			}
			c[j]=0;
		}
		ans1[i]=ans;
	}
	ans=0;
	for(int i=1;i<=n;++i)
	{
		int p=0,l=0,r=2147483647;
		for(int j=1;j<=ms;++j)
		{
			if(a[j].a>r)--p;
			if(p<1) r=a[j].b,++ans,++p,c[j]=1;
		}
		msts=ms;
		ms=0;
		for(int j=1;j<=msts;++j)
		{
			if(!c[j])
			{
				a[++ms]=a[j];
			}
			c[j]=0;
		}
		ans2[i]=ans;
	}
	for(int i=0;i<=n;++i)da=max(da,ans1[i]+ans2[n-i]);
	cout<<da;
	return 0;
}
